package com.lxf.clouduser.controller;

import com.alibaba.fastjson.JSONObject;
import com.lxf.cloudfeign.client.orderClent.OrderClient;
import com.lxf.clouduser.annotate.RateLimit;
import com.lxf.clouduser.bean.UserBean;
import com.lxf.clouduser.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author 罗兴发
 * @data 2024/12/25 10:46
 * @description：用户-控制层
 */
@RestController
@CrossOrigin  //跨域
@RequestMapping("/v1")
@Slf4j
public class UserController {
    @Resource
    OrderClient orderClient;

    @Resource
    UserService userService;
    /**
     * 用户注册接口
     *
     * @return
     */
    @PostMapping("/register")
    public String register(@RequestBody JSONObject json){
        return userService.register(json);
    }

    /**
     * 用户修改登录密码接口
     *
     * @return
     */
    @PostMapping("/updatePwd")
    public String updatePwd(@RequestBody JSONObject json,HttpServletRequest request){
        return userService.updatePwd(json,request);
    }

    /**
     * 用户登录接口
     *
     * @return
     */
    @PostMapping("/login")
    public String login(@RequestBody JSONObject json){
        return userService.login(json);
    }

    /**
     * 用户注销账号接口
     *
     * @return
     */
    @PostMapping("/logout")
    public String logout(HttpServletRequest request){
        return userService.logout(request);
    }

    /**
     * 根据用户ID获取订单列表
     *
     * @return
     */
    @PostMapping("/getOrderByUId")
    public String getOrderByUId(@RequestBody JSONObject json){
        return orderClient.getOrderByUserId(json);
    }


    /**
     *获取用户
     * @return
     */
    @RateLimit(value = 3,timeout = 6)
    @PostMapping("/getUser")
    public String getUser(@RequestBody JSONObject json){
        return userService.getUser(json);
    }

    /**
     *根据用户ID获取用户详情信息
     * @return
     */
    @PostMapping("/getUserByUserId")
    public String getUserByUserId(@RequestBody JSONObject json){
        return userService.getUserByUserId(json);
    }

    /**
     * 超管根据用户ID将用户设置为客服操作
     * @return
     */
    @PostMapping("/setUserKfByUserId")
    public String setUserKfByUserId(@RequestBody JSONObject json,HttpServletRequest request){
        return userService.setUserKfByUserId(json,request);
    }

    /**
     * 根据用户ID，推荐数量、推荐类型
     * @param json
     * @return
     */
    @PostMapping("/recommend")
    public String recommend(@RequestBody JSONObject json,HttpServletRequest request){
        return userService.recommend(json,request);
    }

    /**
     * 根据用户ID查询用户
     * @return
     */
    @PostMapping("/findById")
    public String findById(@RequestBody JSONObject json){
        return userService.findById(json);
    }

    /**
     * 设置用户在线状态
     * @return
     */
    @GetMapping("/setUserStatus")
    public void setUserStatus(){
        userService.setUserStatus();
    }

    /**
     * 清空所有es中的数据表
     * @return
     */
    @GetMapping("/deleteUserEsData")
    public String deleteUserEsData(){
        return userService.deleteUserEsData();
    }
}
